package com.jt.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.jt.pojo.Cart;
import com.jt.pojo.User;
import com.jt.service.DubboCartService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author 张琪
 * @date 2020/12/16
 * @describe
 */
@Controller
@RequestMapping("/cart")
public class CartController {

    @Reference(check = false)
    private DubboCartService cartService;

    /**
     * 完成商品的入库操作
     * url : http://www.jt.com/cart/add/562379.html
     * 参数: cart form 表单提交
     * 返回值: 重定向到购物车列表页面
     *
     * @param cart 重定向到购物车列表页面
     */

    @RequestMapping("/add/{itemId}")
    public String saveCart(Cart cart) {
        Long userId = 7l;
        cart.setUserId(userId);

        cartService.saveCart(cart);

//        重定向
        return "redirect:/cart/show.html";
    }

    /**
     * 实现购物车的删除功能
     * url: http://www.jt.com/cart/delete/1474391964.html
     * 参数: itemId
     * 返回: 重定向到购物车页面
     */
    @RequestMapping("/delete/{itemId}")
    public String deleteCart(Cart cart) {
        Long userId = 7l;
        cart.setUserId(userId);

        cartService.deleteCart(cart);
        return "redirect:/cart/show.html";
    }


    @RequestMapping("/update/num/{itemId}/{num}")       // 如果通过restFul风格传递参数的个数较多, 可以
//    通过POJO对象来接收数据(restFul参数与对象属性一致)
    @ResponseBody               // 因为该方法传输的结果不为一个页面, 因此需要该注解修饰, 否则会导致错误
    public void doUpdate(Cart cart) {
        Long userId = 7l;
        cart.setUserId(userId);
        System.out.println(cart);
        cartService.updateCartNum(cart);
    }


    /**
     * 展现购物车列表数据
     * 参数: 必须获取userId = 7l
     *
     * @return cart.jsp页面
     */

    @RequestMapping("/{page}")
    public String jump(Model model, HttpServletRequest request) {
//        根据request中的存储的信息, 获取user相关信息
//        Long userId = 7l;
        User user = (User) request.getAttribute("JT_USER");
        Long userId = user.getId();
        List<Cart> cartList = cartService.findAllCartById(userId);
        model.addAttribute("cartList", cartList);
        return "cart";

    }


}
